DHCP is widely used for distributing network configuration parameters such as IP addresses for interfaces. There are several methods of allocating IP addresses depending on implementation. In static allocation, a DHCP server assigns an IP address based on a preconfigured mapping to each client's media access control (MAC) address. The MAC address is typically obtained from the server BIOS, or alternatively from a sticker near the network port with its MAC address printed thereon. Typically, the assignment of IP addresses involves manually copying the client's MAC addresses into a database and allocating an address pool with sufficient IP addresses for the relevant network interfaces. A table storing a mapping between IP address assignments and the corresponding MAC address is kept by the DHCP server.
However, in a hyper-scale environment which involves a large number of client devices or network interfaces, the static mapping of MAC-to-IP would be extremely tedious and time-consuming. For example, in a server environment (i.e. where the clients are servers such as application servers or database servers) comprising 5000 servers, the above process would be extremely inefficient and error-prone. Each server typically has more than one network interface (e.g. network adapters and ports, and more in a virtualized environment), and this multiplies the number of MAC addresses that need to be manually collected, stored and managed by the DHCP server. Once the servers are deployed with the DHCP static IP assignment, the DHCP server configuration and the mapping table need to be constantly updated whenever a server's network adapter is added, removed or replaced, by repeating the above process. The above problems arise and exist intrinsically in the field of computers. Currently, DHCP is very rarely used in a large-scale environment like the one discussed above.
It is desirable to provide an improved method and apparatus to deal with DHCP IP assignment more efficiently.